package com.gta.edu.sdk.base.dao.mapper;

import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.UpdateProvider;

import com.gta.edu.sdk.base.dao.provider.SqlProvider;
import com.gta.edu.sdk.mybatis.common.Entity;
/**
 * @description 对应通用业务数据访问的入口
 * @author fengya
 * @2017年5月18日
 */
public interface BaseMapper {
	
	/**
	 * @description 通用添加操作的执行入口
	 * @author fengya
	 * @date 2017年5月18日 上午9:35:04
	 * @param entity
	 * @throws 
	 * @return void
	 */
	@InsertProvider(type = SqlProvider.class, method = "insertSql")
	void save(Entity entity);
	
	/**
	 * @description 通用更新操作的执行入口
	 * @author fengya
	 * @date 2017年5月18日 上午9:35:37
	 * @param entity
	 * @throws 
	 * @return void
	 */
	@UpdateProvider(type = SqlProvider.class, method = "updateSql")
	void update(Entity entity);
	
	/**
	 * @description 通用添加、更新操作的执行入口
	 * @author fengya
	 * @date 2017年5月18日 上午9:35:57
	 * @param entity
	 * @throws 
	 * @return void
	 */
	@UpdateProvider(type = SqlProvider.class, method = "saveOrUpdateSql")
	void saveOrUpdate(Entity entity);
	
	/**
	 * @description 根据对象中的ID进行记录的删除操作
	 * @author fengya
	 * @date 2017年5月18日 上午9:43:24
	 * @param entity
	 * @throws 
	 * @return void
	 */
	@DeleteProvider(type = SqlProvider.class, method = "deleteSql")
	void delete(Class<? extends Entity> cls);
	
}
